<?php
/**
 * @link http://www.yiiframework.com/
 * @copyright Copyright (c) 2008 Yii Software LLC
 * @license http://www.yiiframework.com/license/
 */

namespace app\commands;

use yii\console\Controller;
use yii\console\ExitCode;

/**
 * This command echoes the first argument that you have entered.
 *
 * This command is provided as an example for you to learn how to create console commands.
 *
 * @author Qiang Xue <qiang.xue@gmail.com>
 * @since 2.0
 */
class Hello1Controller extends Controller
{
    /**
     * This command echoes what you have entered as the message.
     * @param string $message the message to be echoed.
     * @return int Exit code
     */
    public function actionIndex($message = 'hello world1')
    {
        echo $message . "\n";

        $time = microtime();
        $servers = [
            ['redis', 6379, 0.01],
            // ['redis1', 6379, 0.01],
            // ['redis2', 6379, 0.01],
            // ['redis3', 6379, 0.01],
            // ['redis4', 6379, 0.01],
        ];

        $redLock = new \RedLock\RedLock($servers, 2, 0);
        // $lock = $redLock->lock('my_resource_name', 10000);
        // return "'" . ((microtime() - $time)) . "'";
        $loopii = $sum = 100;
        $successii = 0;
        $failii = 0;
        while ($loopii--) {
            $lock = $redLock->lock('test', 10000);
            if ($lock) {
                $successii++;
                print_r ($lock);
                $redLock->unlock($lock);
            } else {
                $failii++;
                echo "Lock not acquired\n";
            }

        }

        echo 'success rate:' . ($successii / $sum);
        echo "\n";
        echo 'fail rate:' . ($failii / $sum);
        echo "\n";

        return ExitCode::OK;
    }
}
